<?php
// +----------------------------------------------------------------------
// | 海豚PHP框架 [ DolphinPHP ]
// +----------------------------------------------------------------------
// | 版权所有 2016~2019 广东卓锐软件有限公司 [ http://www.zrthink.com ]
// +----------------------------------------------------------------------
// | 官方网站: http://dolphinphp.com
// +----------------------------------------------------------------------

namespace app\user\admin;

use app\admin\controller\Admin;
use app\common\builder\ZBuilder;
use app\user\model\UserGroup as UserGroupModel;

/**
 * 角色部门控制器
 * @package app\admin\controller
 */
class Group extends Admin
{
    /**
     * 角色列表页
     * @author 蔡伟明 <314013107@qq.com>
     * @return mixed
     * @throws \think\Exception
     * @throws \think\exception\DbException
     */
    public function index()
    {
        cookie('__forward__', $_SERVER['REQUEST_URI']);

        // 获取查询条件
        $map = $this->getMap();
        // 数据列表
        $data_list = UserGroupModel::where($map)->order('id')->paginate();

        // 使用ZBuilder快速创建数据表格
        return ZBuilder::make('table')
            ->setPageTitle('部门管理') // 页面标题
            ->setTableName('admin_role') // 设置表名
            ->setSearch(['name' => '部门名称', 'id' => 'ID']) // 设置搜索参数
            ->addColumns([ // 批量添加列
                ['id', 'ID'],
                ['name', '部门名称'],
                ['right_button', '操作', 'btn']
            ])
            ->addTopButtons('add,enable,disable,delete') // 批量添加顶部按钮
            ->addRightButtons('edit,delete') // 批量添加右侧按钮
            ->setRowList($data_list) // 设置表格数据
            ->fetch(); // 渲染模板
    }

    /**
     * 新增
     * @return mixed
     */
    public function add()
    {
        if ($this->request->isPost()) {
            $data = input();
            if (empty($data['name'])) $this->error('请输入部门名称');

            $data['create_time'] = time();
            $data['update_time'] = time();
            if (UserGroupModel::create($data)) {
                $this->success('操作成功', url('index'));
            }
            $this->error('操作失败');
        }


        return ZBuilder::make('form')
            //->addText('name', '部门名称[:请输入部门名称]','', '', ['<i class="fa fa-wa-red">*</i>'])
            ->addText('name', '部门名称[:请输入部门名称]')
            ->fetch();
    }

    /**
     * 编辑
     * @param null $id 角色id
     * @return mixed
     */
    public function edit($id=null)
    {
        if ($this->request->isPost()) {
            $data = $this->request->post();

            if(empty($data['name'])) $this->error('请输入部门名称');

            // 更新数据
            if (UserGroupModel::update($data)) {
                $this->success('编辑成功', cookie('__forward__'));
            } else {
                $this->error('编辑失败');
            }
        }

        $id = input('param.id');

        // 获取数据
        $info = UserGroupModel::find($id);

        // 使用ZBuilder快速创建表单
        return ZBuilder::make('form')
            ->setPageTitle('编辑')
            ->addFormItem('hidden', 'id')
            ->addText('name', '部门名称[:请输入部门名称]')
            ->setFormData($info)
            ->fetch();
    }

    /**
     * 删除角色
     * @param array $record 行为日志
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    public function delete($record = [])
    {
        return $this->setStatus('delete');
    }

    /**
     * 启用角色
     * @param array $record 行为日志
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    public function enable($record = [])
    {
        return $this->setStatus('enable');
    }

    /**
     * 禁用角色
     * @param array $record 行为日志
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    public function disable($record = [])
    {
        return $this->setStatus('disable');
    }

    /**
     * 设置角色状态：删除、禁用、启用
     * @param string $type 类型：delete/enable/disable
     * @param array $record
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    public function setStatus($type = '', $record = [])
    {
        $ids = $this->request->isPost() ? input('post.ids/a') : input('param.ids');
        $ids = (array)$ids;

        foreach ($ids as $id) {

            switch ($type) {
                case 'enable':
                    if (false === UserGroupModel::where('id', $id)->setField('status', 1)) {
                        $this->error('启用失败，部门ID：'.$id);
                    }
                    break;
                case 'disable':
                    if (false === UserGroupModel::where('id', $id)->setField('status', 0)) {
                        $this->error('禁用失败，部门ID：'.$id);
                    }
                    break;
                case 'delete':

                    if (false === UserGroupModel::where('id', 'in', $id)->delete()) {
                        $this->error('删除失败，部门ID：'.$id);
                    }
                    break;
                default:
                    $this->error('非法操作');
            }

            action_log('role_'.$type, 'admin_role', $id, UID);
        }

        $this->success('操作成功');
    }
}
